package com.leo.foodmaster.admin.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.leo.foodmaster.admin.system.entity.Organ;
import com.baomidou.mybatisplus.extension.service.IService;
import com.leo.foodmaster.commons.entity.Result;
import com.leo.foodmaster.commons.entity.TreeSelect;

import java.util.List;

/**
 * <p>
 * 机构表 服务类
 * </p>
 *
 * @author Leo
 * @since 2021-06-23
 */
public interface IOrganService extends IService<Organ> {

    /**
     * 根据机构Id查询机构和下属机构树形结构
     * @param organId 机构Id
     * @return List<TreeSelect>
     */
    List<TreeSelect> treeSelect(Long organId);

    /**
     * 条件分页查询公司列表
     * @param page 分页条件
     * @param name 公司名称
     * @param status 公司状态
     * @param beginTime 开始时间
     * @param endTime 结束时间
     * @return IPage<Organ>
     */
    IPage<Organ> getOrganPageList(Page<Organ> page, String name, String status, String beginTime, String endTime);

    /**
     * 新增公司
     * @param organ 公司信息
     * @return Result<Object>
     */
    Result<Object> addOrgan(Organ organ);

    /**
     * 修改公司
     * @param organ 公司信息
     * @return Result<Object>
     */
    Result<Object> updateOrgan(Organ organ);

    /**
     * 删除公司
     * @param organIds 公司Ids
     * @return Result<Object>
     */
    Result<Object> deleteOrgan(String organIds);

    /**
     * 修改公司状态
     * @param organ 公司状态信息
     * @return Result<Object>
     */
    Result<Object> changeOrganStatus(Organ organ);

    /**
     * 条件分页查询公司树形列表
     * @param page 分页条件
     * @param name 公司名称
     * @param status 公司状态
     * @param beginTime 开始时间
     * @param endTime 结束时间
     * @return IPage<Organ>
     */
    IPage<Organ> treeList(Page<Organ> page, String name,
                          String status, String beginTime, String endTime);
}
